package com.example.newinfinity.IconModel

import android.content.Context
import android.graphics.Typeface
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.view.setPadding
import com.example.newinfinity.R

//主界面中每一个绘画功能icon的图标样式
//需传入icon的text,正常背景颜色，选中背景颜色
class IconTextView(context: Context, attrs: AttributeSet? = null) :
    AppCompatTextView(context, attrs) {
    var mIconModel: IconModel? = null  //接收外部传入的数据模型

    //点击icon回调的事件 外部获取iconType ，clickState
    var clickCallback: (IconTextView) -> Unit = {}

    init {
        typeface = Typeface.createFromAsset(context.assets, "iconfont.ttf")
        //默认icon图标的颜色 为白色
        setTextColor(resources.getColor(R.color.white, null))
        //点击图标切换背景颜色 选中 与 正常
        setOnClickListener {
            //将被点击的icon的相关信息传递出去
            clickCallback(this)
        }
    }

    //外部获取该方法 传入IconModel数据模型到这个类中 配置icon的图标 背景颜色 等等
    fun bindIconModel(iconModel: IconModel) {
        //图标默认是未选中状态的颜色
        setBackgroundColor(resources.getColor(iconModel.normalBgColor, null))
        mIconModel = iconModel
        text = resources.getString(mIconModel!!.iconString)  //配置图标
    }

    //设置每个icon的size大小
    fun setIconSize(textSize:Int,sizePadding:Int){
        setTextSize(textSize.toFloat())
        setPadding(sizePadding)
    }

    //提供为外部更新icons的点击显示状态
    fun setIconsState(clickType: IconState) {
        if (clickType == IconState.NORMAL) {
            setBackgroundColor(resources.getColor(mIconModel!!.selectBgColor, null))
            //更新该iconTextView配置模型iconModel中的iconState点击状态
            mIconModel!!.iconState = IconState.SELECTED
        }
        if (clickType == IconState.SELECTED) {
            setBackgroundColor(resources.getColor(mIconModel!!.normalBgColor, null))
            //更新该iconTextView配置模型iconModel中的iconState点击状态
            mIconModel!!.iconState = IconState.NORMAL
        }
    }

    //只清空目前选中状态的icon
    fun onlySetSelectedState(clickType: IconState){
        if (clickType == IconState.SELECTED) {
            setBackgroundColor(resources.getColor(mIconModel!!.normalBgColor, null))
            //更新该iconTextView配置模型iconModel中的iconState点击状态
            mIconModel!!.iconState = IconState.NORMAL
        }
    }

}